﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DTO;
using BUS;
namespace QLDT
{
    public partial class frmDuyetDeTai : DevExpress.XtraEditors.XtraForm
    {
        private int sosvhienhanh;
        public frmDuyetDeTai()
        {
            InitializeComponent();
        }

        private void frmDuyetDeTai_Load(object sender, EventArgs e)
        {
            BackColor = Color.White;
            radio_DuyetDT.SelectedIndex = 1;
            load();
        }
        public void createGridlookup()
        {
            // gridlookup Ma giang vien
            gridLookMaGV.EditValue = null;
            gridLookMaGV.Properties.View.OptionsBehavior.AutoPopulateColumns = false;
            gridLookMaGV.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
            gridLookMaGV.Properties.ValueMember = "MaGV";
            gridLookMaGV.Properties.DisplayMember = "MaGV";
            gridLookMaGV.Properties.View.BestFitColumns();
            gridLookMaGV.Properties.PopupFormWidth = 400;
            gridLookMaGV.Properties.NullText = "Chọn giảng viên";
            gridLookMaGV.Properties.DataSource = BUS_GiangVien.SelectGiangVien();
            // gridlookup Ma chuyen nganh
            gridLookMaCN.EditValue = null;
            gridLookMaCN.Properties.View.OptionsBehavior.AutoPopulateColumns = false;
            gridLookMaCN.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
            gridLookMaCN.Properties.ValueMember = "MaCN";
            gridLookMaCN.Properties.DisplayMember = "MaCN";
            gridLookMaCN.Properties.View.BestFitColumns();
            gridLookMaCN.Properties.PopupFormWidth = 400;
            gridLookMaCN.Properties.NullText = "Chọn Chuyên Ngành";
            gridLookMaCN.Properties.DataSource = BUS_ChuyenNganh.SelectChuyenNganh();
            // gridlookup Ma loai de tai
            gridLookMaLoaiDT.EditValue = null;
            gridLookMaLoaiDT.Properties.View.OptionsBehavior.AutoPopulateColumns = false;
            gridLookMaLoaiDT.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
            gridLookMaLoaiDT.Properties.ValueMember = "MaLoaiDT";
            gridLookMaLoaiDT.Properties.DisplayMember = "MaLoaiDT";
            gridLookMaLoaiDT.Properties.View.BestFitColumns();
            gridLookMaLoaiDT.Properties.PopupFormWidth = 400;
            gridLookMaLoaiDT.Properties.NullText = "Chọn loại đề tài";
            gridLookMaLoaiDT.Properties.DataSource = BUS_LoaiDT.selectLoaiDeTai();
        }
        public void load()
        {
            layout_CapNhatDT.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            if (radio_DuyetDT.SelectedIndex == 0)
            {
                gridDSDeTai.DataSource = BUS_DeTai.selectDeTai_TrangThai(true);
                btn_duyetdetai.Enabled = false;
                gridDSDetai_TrangThai.OptionsColumn.AllowEdit = false;
                if (gvDSDeTai.RowCount > 0)
                {
                    btnXoa.Enabled = true;
                    btnSua.Enabled = true;
                }
                else
                {
                    btnXoa.Enabled = false;
                    btnSua.Enabled = false;
                }
            }
            else
            {
                gridDSDeTai.DataSource = BUS_DeTai.selectDeTai_TrangThai(false);
                if(gvDSDeTai.RowCount>0)
                    btn_duyetdetai.Enabled = true;
                else
                    btn_duyetdetai.Enabled = false;
                gridDSDetai_TrangThai.OptionsColumn.AllowEdit = true;
                btnXoa.Enabled = false;
                btnSua.Enabled = false;
            }
            createGridlookup();
        }
        private void radio_DuyetDT_SelectedIndexChanged(object sender, EventArgs e)
        {
            load();
        }

        private void btn_duyetdetai_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < gvDSDeTai.RowCount; i++)
            {
                if ((bool)gvDSDeTai.GetRowCellValue(i, "TrangThai") == true)
                {
                    string madt = gvDSDeTai.GetRowCellValue(i, "MaDT").ToString();
                    if (!BUS_DeTai.UpdateTrangThaiDeTai(madt, true))
                    {
                        XtraMessageBox.Show("Lỗi không cập nhật được trạng thái", "Thông báo");
                        return;
                    }
                }
            }
            load();
        }

        private void btn_dong_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        
        private void btnSua_Click(object sender, EventArgs e)
        {
            if (gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "NamHoc").ToString() != DateTime.Now.Year.ToString())
            {
                XtraMessageBox.Show("Không được sửa");
                return;
            }
            lb_titleQLDT.Text = "CHỈNH SỬA ĐỀ TÀI";
            layout_CapNhatDT.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
            txtMaDT.Text = gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "MaDT").ToString();
            txtTenDT.Text = gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "TenDT").ToString();
            txtSoSVToiDa.Text = gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "SVToiDa").ToString();
            sosvhienhanh = int.Parse(gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "SoSVHH").ToString());
            txtSoTuanthuchien.Text = gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "SoTuan").ToString();
            txtHocKy.Text = gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "HocKy").ToString();
            txtNamhoc.Text = gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "NamHoc").ToString();
            gridLookMaGV.EditValue = null;
            gridLookMaGV.Properties.NullText = gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "MaGV").ToString();
            gridLookMaLoaiDT.EditValue = null;
            gridLookMaLoaiDT.Properties.NullText = gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "MaLoaiDT").ToString();
            gridLookMaCN.EditValue = null;
            gridLookMaCN.Properties.NullText = gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "MaCN").ToString();
            txtMaDT.Enabled = false;
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            layout_CapNhatDT.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
        }
        public bool kiemtra()
        {
            if (txtMaDT.Text == "")
                return false;
            if (txtTenDT.Text == "")
                return false;
            if (txtSoSVToiDa.Text == "")
                return false;
            if (txtSoTuanthuchien.Text == "")
                return false;
            if (txtHocKy.Text == "")
                return false;
            if (txtNamhoc.Text == "")
                return false;
            if (gridLookMaGV.EditValue == null)
                if (gridLookMaGV.Properties.NullText == "Chọn giảng viên")
                    return false;
            if (gridLookMaLoaiDT.EditValue == null)
                if (gridLookMaLoaiDT.Properties.NullText == "Chọn loại đề tài")
                    return false;
            if (gridLookMaCN.EditValue == null)
                if (gridLookMaCN.Properties.NullText == "Chọn Chuyên Ngành")
                    return false;
            return true;
        }
        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            if (!kiemtra())
            {
                XtraMessageBox.Show("Hãy nhập đầy đủ thông tin", "Thông báo");
                return;
            }
            if (int.Parse(txtSoSVToiDa.Text) < sosvhienhanh)
            {
                XtraMessageBox.Show("Số sinh viên tối đa phải lớn hơn sinh viên hiện hành", "Thông báo");
                return;
            }
            DTO_DeTai detai = new DTO_DeTai();
            detai.MaDT = txtMaDT.Text;
            detai.TenDT = txtTenDT.Text;
            detai.SVToiDa = int.Parse(txtSoSVToiDa.Text);
            if (gridLookMaCN.EditValue == null)
                detai.MaCN = gridLookMaCN.Properties.NullText;
            else
                detai.MaCN = gridLookMaCN.EditValue.ToString();
            if (gridLookMaLoaiDT.EditValue == null)
                detai.MaLoaiDT = gridLookMaLoaiDT.Properties.NullText;
            else
                detai.MaLoaiDT = gridLookMaLoaiDT.EditValue.ToString();
            detai.SoTuan = txtSoTuanthuchien.Text;
            detai.HocKy = txtHocKy.Text;
            detai.NamHoc = txtNamhoc.Text;
            if (gridLookMaGV.EditValue == null)
                detai.MaGV = gridLookMaGV.Properties.NullText;
            else
                detai.MaGV = gridLookMaGV.EditValue.ToString();
            if (gridLookMaLoaiDT.EditValue == null)
            detai.TrangThai = true;
            detai.SoSVHH = int.Parse(sosvhienhanh.ToString());
            detai.NgayCapNhat = DateTime.Now.ToString("yyyy/MM/dd");
                if (!BUS.BUS_DeTai.UpdatetDeTai(detai))
                    XtraMessageBox.Show("Lỗi - cập nhật không thành công", "Thông báo");
                else
                    load();
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            string madt = gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "MaDT").ToString();
            try
            {
                int svhh = int.Parse(gvDSDeTai.GetRowCellValue(gvDSDeTai.FocusedRowHandle, "SoSVHH").ToString());
                if (svhh > 0)
                {
                    XtraMessageBox.Show("Đề tài " + madt + " hiện tại có " + svhh + "đang thực hiện, không thể xóa dc", "Thông báo");
                    load();
                }
            }
            catch { }
            if (XtraMessageBox.Show("Bạn có muốn xóa đề tài " + madt + " hay không", "Thông báo", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                if (!BUS.BUS_DeTai.XoamemDeTai(madt))
                    XtraMessageBox.Show("Lỗi - cập nhật không thành công", "Thông báo");
                else
                    load();
            }
        }

        private void txtSoSVToiDa_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtSoTuanthuchien_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }
    }
}